home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Hot Mix 17
/
Hot Mix 17.iso
/
HM17_SGI
/
research
/
examples
/
doc
/
ptr_read.pro
< prev
next >
Wrap
Text File
|
1997-07-08
|
2KB
|
70 lines
; PTR_READ accepts one argument, a named variable in which
; to return the pointer that points at the beginning of the list.
PRO ptr_read, first
; Initialize the input string variable.
newstring = ''
; Create an anonymous strucutre to contain list elements. Note that
; the next field is initialized to be a null pointer.
llist = {name:'', next:PTR_NEW()}
; Print instructions for this program.
PRINT, 'Enter a list of names.'
PRINT, 'Enter a period (.) to stop list entry.'
; Continue accepting input until a period is entered.
WHILE newstring NE "." DO BEGIN
; Read a new string from the key board.
READ, newstring, PROMPT='Enter string: '
IF newstring NE '.' THEN BEGIN
; Check to see if a pointer called _first_ exists. If not, this
; is the first element. Create a pointer called _first_ and
; initialize it to be a list element. Create a second pointer
; to the heap variable pointed at by _first_.
IF NOT(PTR_VALID(first)) THEN BEGIN
first = PTR_NEW(llist)
current = first
ENDIF
; Create a pointer to the next list element.
next = PTR_NEW({name:'', next:PTR_NEW()})
; Set the name field of _current_ to the input string.
(*current).name = newstring
; Set the next field of _current_ to the pointer
; to the next list element.
(*current).next = next
; Copy the pointer to _current_.
last = current
; Make _next_ the current pointer.
current = next
ENDIF
ENDWHILE
; Set the _next_ field of the last element to the null pointer.
IF PTR_VALID(last) THEN (*last).next = PTR_NEW()
END